package com.ai.zuochengyun.phase01.class03;

/**
 * 二叉树折纸问题
 */
public class Code17_PrintFolding {

    public static void main(String[] args) {
        printAllFolds(4);
    }

    public static void printAllFolds(int level) {
        if (level < 1) {
            return;
        }
        process(1, level, true);
    }

    /**
     * 当前你来到一个节点，脑海中想象
     * 这个节点在curLevel层，一共有totalLevel层，并且不变
     * 这个节点如果是凹的话，down = T
     * 这个节点如果是凸的话，down = F
     * 函数的功能：中序打印以你想象的节点为头的整棵树
     *
     * @param curLevel
     * @param totalLevel
     * @param down
     */
    public static void process(int curLevel, int totalLevel, boolean down) {
        if (curLevel > totalLevel) {
            return;
        }

        process(curLevel + 1, totalLevel, false);
        System.out.print(down ? "凹 " : "凸 ");
        process(curLevel + 1, totalLevel, true);
    }
}
